package dev.ece.suit.hexmap.terrain.type;

import dev.ece.core.light.Material;
import dev.ece.core.shader.Shader;
import dev.ece.suit.hexmap.HexMapCell;
import dev.ece.suit.hexmap.terrain.TerrainFactory;

/**
 * 地形类型
 * @author 潜行的虚影
 *
 */
@Deprecated
public interface TerrainType {
	/**
	 * 可以行走
	 */
	public final static int TRIFFIC_WALK = 1;

	/**
	 * 可以航行
	 */
	public final static int TRIFFIC_SAIL = 2;
	
	/**
	 * 可以飞行
	 */
	public final static int TRIFFIC_FLY = 4;
	
	/**
	 * 是否有水
	 * @return
	 */
	public boolean hasWater();
	
	/**
	 * 更新顶点
	 * @param vertice
	 * @param normals
	 */
	public void update(TerrainFactory terrainFactory, HexMapCell cell);
	
	/**
	 * 纹理索引
	 * @return
	 */
	public int getTextureIndex();
	
	/**
	 * 其他地形数据
	 * @param shader
	 */
	default void glShader(Shader shader) {}
	
	/**
	 * 材质
	 * @return
	 */
	public Material getMaterial();
	
	/**
	 * 获取通行交通情况
	 * @return
	 */
	public int getTraffic();
	
	/**
	 * 是否可以通过
	 * @param traffic
	 * @return
	 */
	default boolean isPass(int traffic) {
		return (this.getTraffic() & traffic) > 0;
	}
	
}
